package com.datang.yourtomcat01;
import java.io.IOException;
import java.io.InputStream;

/*
 * @auther 顶风少年
 * @mail dfsn19970313@foxmail.com
 * @date 2019-09-16 15:58
 * @notify 请求内容
 * @version 1.0
 */

public class Request {
    private InputStream input;
    private String uri;

    public Request(InputStream input) {
        this.input = input;
    }


    /*
     * @author 顶风少年
     * @date 2019/9/16 16:57
     * @mail dfsn199703132038@foxmail.com
     * @throws
     * @param
     * @result void
     * @notify 解析请求内容
     * version 1.0
     */
    public void parse() {
        //将字节转换成字符
        StringBuffer request = new StringBuffer(2048);
        //是否读取结束
        int i;
        //将字节读取到此处
        byte[] buffer = new byte[2048];
        try {
            //读取
            i = input.read(buffer);
        } catch (IOException e) {
            e.printStackTrace();
            i = -1;
        }
        //循环将字节放到String中
        for (int j = 0; j < i; j++) {
            request.append((char) buffer[j]);
        }
        //解析请求资源路径
        uri = parseUri(request.toString());
    }

    /*
     * @author 顶风少年
     * @date 2019/9/16 16:59
     * @mail dfsn199703132038@foxmail.com
     * @throws
     * @param
     * @param requestString
     * @result java.lang.String
     * @notify 解析请求资源路径
     * version 1.0
     */
    private String parseUri(String requestString) {
        //记录前两个空格,第一个空格和第二个空格之间是 请求路径 GET /SHUTDOWN HTTP/1.1
        int index1, index2;
        //找到第一个空格的位置
        index1 = requestString.indexOf(" ");
        if (index1 != -1) {
            //找到第二个空格的位置
            index2 = requestString.indexOf(" ", index1 + 1);
            if (index2 > index1) {
                //截取请求路径
                return requestString.substring(index1 + 1, index2);
            }
        }
        return null;
    }

    /*
     * @author 顶风少年
     * @date 2019/9/16 17:00
     * @mail dfsn199703132038@foxmail.com
     * @throws
     * @param
     * @result java.lang.String
     * @notify 获取请求路径
     * version 1.0
     */
    public String getUri() {
        return uri;
    }
}
